#ifndef INTEGERCHROMOSOME_H_
#define INTEGERCHROMOSOME_H_

#include <QMetaType>

#include "ComplexChromosome.h"

/**
  * Class that represents chromosome containing integer numbers, greater or equal 0.
  * Contains chromosome bits, fitness and methods to cross over and mutate.
  * @author Łukasz Szybka
  */
class IntegerChromosome : public ComplexChromosome
{
public:
    /**
      * Constructor
      */
    IntegerChromosome();
    /**
      * Constructor
      * @param size Lenght of chromosome
      */
    IntegerChromosome(int size);

    IntegerChromosome(int size, int min, int max);
    IntegerChromosome(int min, int max);
    /**
      * Copy constructor
      * @param other IntegerChromosome to copy
      */
    IntegerChromosome(const IntegerChromosome &other);


    QString toString() const;

    Chromosome* duplicate() const;


protected:
    QVariant getRandomValue() const;
	
private:

};

Q_DECLARE_METATYPE(IntegerChromosome);

#endif /*INTEGERCHROMOSOME_H_*/
